Функции

Функции, реализованные в СУБД ЛИНТЕР, предназначены для работы со значениями столбцов и/или произвольными выражениями. Они допустимы в любых операторах SQL в тех местах, где синтаксическая конструкция позволяет использовать выражение.

Все функции SQL можно разделить на две группы:

  1. встроенные функции;

  2. пользовательские функции.

Встроенные функции являются неотъемлемой частью транслятора языка SQL СУБД ЛИНТЕР и не зависят от конкретного экземпляра БД. Приложение, использующее только встроенные функции, является переносимым приложением.

В качестве пользовательских функций в СУБД ЛИНТЕР выступают хранимые процедуры, возвращающие скалярное значение (не массив значений). Скалярная функция всегда возвращает одно значение. Результатом вызова пользовательской функции без аргументов является константа.

Описания пользовательских функций хранятся непосредственно в БД, поэтому обращение к ним возможно только в конкретном экземпляре БД. При переносе приложения, содержащего пользовательские функции, на другую БД, все используемые функции должны быть экспортированы в эту БД. Приложение, использующее пользовательские функции, уже не является переносимым приложением (переносимое приложение должно быть самонастраивающимся, т.е. проверять наличие требуемых функций и при их отсутствии самостоятельно создавать их в БД).

Механизм пользовательских функций позволяет разработчикам приложений расширять стандартный набор встроенных функций с учетом специфики приложений. Использование пользовательских функций повышает производительность клиент-серверных приложений за счет переноса обработки данных непосредственно на сервер БД и уменьшения сетевого трафика. Это является более эффективным решением, чем загрузка из БД всех необходимых для обработки строк таблицы и последующее выполнение расчетов на клиентской машине.

Разработанный набор пользовательских функций для некоторой предметной области позволяет разработчикам приложений в этой предметной области повышать качество разработки за счет использования готовых решений. В данном случае приложения приближаются к объектно-ориентированному виду.

Спецификация пользовательской функции включает:

  1. имя схемы;

  2. имя функции;

  3. список входных параметров и их тип.

В БД может быть несколько функций с одинаковым именем, но созданных в разных схемах. Если при вызове имя схемы явно не указано, то вызывается функция с схемы соответствующей имени владельца, под которым выполняется приложение.

Функция идентифицируется ее схемой, именем функции, количеством и типом параметров. Это называется прототипом функции. Уникальной в экземпляре БД должна быть комбинация < имя схемы > + < имя функции >.